First Game TutorialChapter 3: Sprites and Animations: Rendering and Animation HandlingOn this pageChapter 3: Sprites and Animations: Rendering and Animation Handling In this chapter, you'll learn how to load sprite images in Dora and add them to the scene. Additionally, you'll discover how to use frame animations to bring characters and enemies to life, making your game more engaging and dynamic. Objectives Load and display sprites Create frame animations Add animations to characters and enemies 1. Loading and Displaying Sprites In Dora, Sprite is the basic node for displaying images. You can use Sprite to load and display images for game elements such as characters and enemies. The following code demonstrates how to load a sprite and add it to the scene: Example Codeimport { Sprite, Vec2 } from 'Dora';// Load and display a spriteconst playerSprite = Sprite('Image/art.clip|playerGrey_walk1');if (!playerSprite) error('Failed to create sprite!');playerSprite.order = 1;playerSprite.position = Vec2(0, 0); // Set positionplayerSprite.addTo(Director.entry); // Add to the current scene In this example, we load a sprite using Sprite('Image/art.clip|playerGrey_walk1'). Here, playerGrey_walk1 is the resource name of the sprite image contained in the Image/art.clip atlas. The position property is used to set the sprite's display position. 2. Creating Frame Animations To add walking or other repetitive actions to characters, you can use frame animations. Frame animations consist of a series of images that are quickly switched to create an animation effect. In Dora, you can create a function called playAnimation to play frame animations, as shown below: dodge_the_creeps/init.tsximport { Node, Sprite, sleep } from 'Dora';const playAnimation = (node: Node.Type, name: string) => { node.removeAllChildren(); // Clear other child nodes const interval = 0.2; // Set frame interval time const frames = [ Sprite(`Image/art.clip|${name}1`) ?? Sprite(), Sprite(`Image/art.clip|${name}2`) ?? Sprite() ]; for (let frame of frames) { // If the animation name starts with `enemy`, rotate the sprite to a set angle if (name.startsWith('enemy')) { frame.angle = -90; // Adjust angle } frame.addTo(node); } let i = 0; node.loop(() => { frames[i].visible = true; i = (i + 1) % 2; // Switch frames frames[i].visible = false; sleep(interval); return false; });}; In the playAnimation function: node.removeAllChildren(): Clears the node's child nodes to avoid overlapping elements. The frames array contains the frames needed for the animation. node.loop() creates a loop to periodically switch frames, achieving the animation effect. sleep(interval) sets the time interval between frame switches. 3. Applying Animations to Characters and Enemies Next, we'll apply this animation to characters and enemies, adding dynamic effects to the game. Adding Animation to Characters Assuming you already have a character node playerNode, you can add a walking animation with the following code: Example Codeconst playerNode = Node().addTo(Director.entry);playerNode.order = 1;const playerAnimNode = Node().addTo(playerNode); // Create a child node for animationplayAnimation(playerAnimNode, 'playerGrey_walk'); // Play animation Here, we create playerAnimNode and add it to playerNode. Then, we call playAnimation, specifying the animation name playerGrey_walk. Adding Different Animations to Enemies You can use the same playAnimation function to add different animations to enemies. For example, if enemies have three types: flying, walking, and swimming, you can randomly select an animation type: Example Codeconst enemyNode = Node().addTo(Director.currentScene);const enemyAnimNode = Sprite().addTo(enemyNode);const animations = ['enemyFlyingAlt_', 'enemyWalking_', 'enemySwimming_'];playAnimation(enemyAnimNode, animations[math.random(0, animations.length - 1)]); Using math.random, a random animation type is selected, giving enemies different behaviors and adding variety to the game. 4. Summary In this chapter, you learned how to load and display sprites in Dora and create frame animations. We applied animations to characters and enemies, adjusting their animation directions as needed. These skills allow you to design lively animations for game characters and enemies, enhancing the visual experience of your game. In the next chapter, you'll learn how to use the InputManager to handle keyboard and controller inputs, enabling players to control character movement.